package com.ccsc.auth.dao;

import com.ccsc.auth.entity.Role;
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 角色
 * Created by yyangs on 2017/2/10.
 */
public interface RoleDao {
    Role getRoleById(Role role) throws Exception;   			                                                        //根据角色id查单个角色信息

    List<Role> getAllRoles() throws Exception;       									                                //获取全部角色列表
    List<Role> getAllRoles(PageBounds pageBounds) throws Exception;       									            //获取全部角色列表

    List<Role> getAllRolesByCondition(Role role);					                                                    //分页并根据条件查询角色列表
    List<Role> getAllRolesByCondition(Role role, PageBounds pageBounds) throws Exception;                               //根据角色条件（角色状态等）查询角色列表

    List<Role> getAllRolesByUserId(@Param("userId") Integer userId) throws Exception;                                   //根据用户id查询角色信息
    List<Role> getAllRolesByResourceId(@Param("resourceId")Integer resourceId) throws Exception;                        //根据资源id查询角色信息

    Integer createRole(Role role) throws Exception;  									                                //添加角色
    Integer updateRole(Role role) throws Exception;  							                                        //修改角色
    Integer deleteRole(Role role) throws Exception; 					                                                //删除角色

    Integer createRoleAndResources(Role role) throws Exception;  									                    //添加角色权限
    Integer deleteRoleAndResources(Role role) throws Exception; 					                                    //删除角色权限
    //权限的修改 是将role的权限删除然后添加

    Integer getUserNumByRoleId(Integer roleId) throws  Exception;                                                       //获得某一角色的用户数量
}